import { getToken, removeToken, removeUserInfo } from './auth.js';

// 基础URL配置
const BASE_URL = process.env.NODE_ENV === 'development' 
  ? 'http://localhost:3000/api/mobile'  // 开发环境API地址
  : 'https://api.yourserver.com/api/mobile';  // 生产环境API地址

// HTTP请求封装
const request = (url, method = 'GET', data = {}, needToken = false) => {
  return new Promise((resolve, reject) => {
    const header = {
      'Content-Type': 'application/json'
    };
    
    // 如果需要token，从存储中获取并添加到请求头
    if (needToken) {
      const token = getToken();
      if (token) {
        header['Authorization'] = `Bearer ${token}`;
      } else {
        // 如果需要token但没有token，可能需要跳转到登录页
        uni.navigateTo({ url: '/pages/login/login' });
        return reject(new Error('未登录或登录已过期'));
      }
    }
    
    uni.request({
      url: `${BASE_URL}${url}`,
      method,
      data,
      header,
      success: (res) => {
        // 请求成功，但接口返回错误
        if (res.statusCode !== 200 && res.statusCode !== 201) {
          // token过期或无效
          if (res.statusCode === 401) {
            removeToken();
            removeUserInfo();
            uni.navigateTo({ url: '/pages/login/login' });
            return reject(new Error('登录已过期，请重新登录'));
          }
          
          return reject(new Error(res.data.message || '请求失败'));
        }
        
        // 请求成功并且接口返回成功
        resolve(res.data);
      },
      fail: (err) => {
        // 请求失败
        reject(new Error(err.errMsg || '网络异常，请稍后重试'));
      }
    });
  });
};

// API方法封装
export default {
  // 用户相关接口
  user: {
    // 获取用户信息
    getInfo: () => request('/user/info', 'GET', {}, true),
    // 更新用户信息
    updateInfo: (data) => request('/user/info', 'PUT', data, true),
  },
  
  // 房间相关接口
  room: {
    // 获取房间列表
    getList: (params) => request('/room/list', 'GET', params),
    // 获取房间详情
    getDetail: (id) => request(`/room/detail/${id}`, 'GET'),
  },
  
  // 优惠券相关接口
  coupon: {
    // 获取所有可用优惠券
    getAll: () => request('/coupon', 'GET'),
    // 获取优惠券详情
    getDetail: (id) => request(`/coupon/${id}`, 'GET'),
    // 购买优惠券
    purchase: (couponId) => request(`/coupon/${couponId}/purchase`, 'POST', {}, true),
    // 获取用户的优惠券列表
    getUserCoupons: () => request('/coupon/user/list', 'GET', {}, true),
    // 获取优惠券中心列表
    getCouponCenter: () => request('/coupon/center/list', 'GET', {}, true),
    // 领取免费优惠券
    claim: (couponId) => request('/coupon/claim', 'POST', { couponId }, true),
    // 券码验证
    verify: (verifyCode) => request('/coupon/verify', 'POST', { verifyCode }, true),
  },
  
  // 订单相关接口
  order: {
    // 获取订单列表
    getList: (params) => request('/order/list', 'GET', params, true),
    // 获取订单详情
    getDetail: (id) => request(`/order/${id}`, 'GET', {}, true),
  },

  // 其他API接口可以继续添加...
}; 